package cn.itcast.web.controller.company;

import cn.itcast.domain.company.Company;
import cn.itcast.service.company.CompanyService;
import cn.itcast.web.controller.BaseController;
import com.alibaba.dubbo.config.annotation.Reference;
import com.github.pagehelper.PageInfo;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * 企业控制器
 */
@Controller
@RequestMapping("/company")
public class CompanyController extends BaseController{

    //注入Service
    @Reference
    private CompanyService companyService;


    /**
     * 方法的API：
     *    方法URL： http://localhost:8080/company/list.do
     *    方法参数： pageNum=1&pageSize=5
     *    方法返回值： /WEB-INF/pages/company/company-list.jsp
     *
     *    @RequestParam(defaultValue = "1")： 给参数设置默认值，当前参数为NULL使用默认值
     */
    @RequestMapping("/list")
    @RequiresPermissions("企业管理")
    public String list(
                       @RequestParam(defaultValue = "1")Integer pageNum,
                       @RequestParam(defaultValue = "5")Integer pageSize){
        //判断当前登录用户是否拥有企业管理访问权限: checkPermission
        /*Subject subject = SecurityUtils.getSubject();
        subject.checkPermission("企业管理");*/


        //调用业务方法
        PageInfo pageInfo = companyService.findByPage(pageNum,pageSize);
        //把数据存入request域
        request.setAttribute("pageInfo",pageInfo);
        //返回jsp页面
        return "company/company-list";
    }


    /**
     * 跳转新增页面
     *   1）URL：http://localhost:8080/company/toAdd.do
     *   2）无
     *   3）返回：/WEB-INF/pages/company/company-add.jsp
     */
    @RequestMapping("/toAdd")
    public String toAdd(){
        return "company/company-add";
    }


    /**
     * 保存数据（添加/修改）
     *  1）URL： http://localhost:8080/company/edit.do
     *  2）参数： 企业的表单所有数据
     *  3）返回： 重定向回到列表
     */
    @RequestMapping("/edit")
    public String edit(Company company){

        //判断是否存在id值
        if(StringUtils.isEmpty(company.getId())){
            //不存在ID值，为添加
            companyService.save(company);
        }else{
            //存在ID值，为修改
            companyService.update(company);
        }

        return "redirect:/company/list.do";
    }

    /**
     * 进入修改页面
     *  1）URL： http://localhost:8080/company/toUpdate.do
     *  2）参数：id=1
     *  3）返回：/WEB-INF/pages/company/company-update.jsp
     */
    @RequestMapping("/toUpdate")
    public String toUpdate(String id){
        //1.查询一个企业对象
        Company company = companyService.findById(id);
        //2.存入request域
        request.setAttribute("company",company);

        return "company/company-update";
    }

    /**
     * 删除
     *  1）URL：http://localhost:8080/company/delete.do
     *  2）参数：id=895f8314-8490-4c1f-b98e-c999da93eb5e
     *  3）返回： 重定向回到列表
     */
    @RequestMapping("/delete")
    public String delete(String id){
        //删除企业
        companyService.delete(id);

        return "redirect:/company/list.do";
    }

}
